#pragma once

#include <map>
#include <dwmapi.h>

#define PAN_DWM_OP          _T("atom_dwm_op")

enum {
    PFI_DWM_OP_BASE     = 700,

    // Param = SystemDwmInfo *, IOParam = bool
    PFI_GET_SYSTEM_DWM_ATTRIBUTES,

    // Param = WindowDwmAttrList *, IOParam = bool
    PFI_GET_WINDOW_DWM_ATTRIBUTES,

    // Param = WindowDwmAttrList *, IOParam = bool
    PFI_SET_WINDOW_DWM_ATTRIBUTES,

    // Param = MARGINS *
    PFI_EXTEND_FRAME_INTO_CHILD_AREA,
};

struct SystemDwmInfo {
    bool bIsDwmCompositionEnabled;
};

struct WindowDwmAttr {
    PVOID pValue;
    DWORD nValueSize;
};

typedef std::map<DWORD, WindowDwmAttr> WindowDwmAttrList;
